package com.pagoda.nerp.trade.common.objectutil;

import com.alibaba.fastjson.JSONObject;
import com.pagoda.nerp.trade.common.httputil.HttpClientHelper;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 *
 * 线程池单例类
 * 提示：
 *
 * newCachedThreadPool创建一个可缓存线程池，如果线程池长度超过处理需要，可灵活回收空闲线程，若无可回收，则新建线程。
 * newFixedThreadPool 创建一个定长线程池，可控制线程最大并发数，超出的线程会在队列中等待。
 * newScheduledThreadPool 创建一个定长线程池，支持定时及周期性任务执行。
 * newSingleThreadExecutor 创建一个单线程化的线程池，它只会用唯一的工作线程来执行任务，保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
 *
 * 饿汉单例模式
 *
 * Created by Jungle on 2016/12/21.
 */
public class ThreadPoolSingleton {

    private ThreadPoolSingleton() {
    }

    private static ThreadPoolSingleton THREAD_POOL_SINGLETON_TOOL = new ThreadPoolSingleton();

    private static ExecutorService EXECUTOR_SERVICE = Executors.newSingleThreadExecutor();

    public static ThreadPoolSingleton getInstance(){
        return THREAD_POOL_SINGLETON_TOOL;
    }

    public static void execute(Runnable command){
        ThreadPoolSingleton.EXECUTOR_SERVICE.execute(command);
    }

    public static void main(String[] args){
        ThreadPoolSingleton.execute(new Runnable() {
            @Override
            public void run() {
                String url = "http://h5.pagoda.com.cn/WxGateWay/rest/fordomain/sendTplMsg";
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("platType", "4");
                jsonObject.put("wxOrgID", "gh_2fd0fb143b38");
                jsonObject.put("toUser", "onx3Gs5cnT81Rfvi0YiWk2uXAqkU");
                jsonObject.put("template_id", "LvWpLMjjmLOaLzrGkta1gLDCW5esa7QTOnDPZSYdEwI");
                jsonObject.put("url", "");
                JSONObject dataJson = new JSONObject();
                JSONObject remarkJson = new JSONObject();
                remarkJson.put("value", "您的审核已成功");
                remarkJson.put("color", "#173177");
                dataJson.put("remark",remarkJson);
                jsonObject.put("data", dataJson);
                String responseStr = HttpClientHelper.invoke(url,jsonObject.toJSONString());
            }
        });
    }
}

